﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using saigonbook.Biz;
using System.Windows.Forms.DataVisualization.Charting;

namespace quanlybansach.Frm
{
    public partial class Frm_thongkebaocao : Form
    {
        public Frm_thongkebaocao()
        {
            InitializeComponent();

            danhsachmuahang.Columns.Add("Col1", "STT");
            danhsachmuahang.Columns.Add("Col2", "Tháng");
            danhsachmuahang.Columns.Add("Col3", "Số lượng nhập (quyển)");
            danhsachmuahang.Columns.Add("Col4", "Tổng tiền (VNĐ)");
            danhsachmuahang.Columns[0].Width = 60;
            danhsachmuahang.Columns[1].Width = 100;
            danhsachmuahang.Columns[2].Width = 160;
            danhsachmuahang.Columns[3].Width = 160;;
            danhsachmuahang.AllowUserToAddRows = false;

            danhsachbanhang.Columns.Add("Col1", "STT");
            danhsachbanhang.Columns.Add("Col2", "Tháng");
            danhsachbanhang.Columns.Add("Col3", "Số lượng bán (quyển)");
            danhsachbanhang.Columns.Add("Col4", "Tổng tiền (VNĐ)");
            danhsachbanhang.Columns[0].Width = 60;
            danhsachbanhang.Columns[1].Width = 100;
            danhsachbanhang.Columns[2].Width = 160;
            danhsachbanhang.Columns[3].Width = 160;
            danhsachbanhang.AllowUserToAddRows = false;
            btnbaocaonhap.Enabled = false;
            btnbaocaoban.Enabled = false;

            cbbthang_nhap.Items.Add("Không chọn tháng");
            cbbthang_ban.Items.Add("Không chọn tháng");
            for (int i = 1; i <= 12; i++)
            {
                cbbthang_nhap.Items.Add(i);
                cbbthang_ban.Items.Add(i);
            }
            List<int> so = new List<int>();
            for (int i = DateTime.Now.Year; i >= DateTime.Now.Year - 20; i--)
                so.Add(i);
            cbbnam_nhap.DataSource = so;
            cbbnam_ban.DataSource = so;
        }

        private void nam()
        {
            danhsachmuahang.Columns[1].HeaderText = "Tháng";
            danhsachbanhang.Columns[1].HeaderText = "Tháng";
        }

        private void thang()
        {
            danhsachmuahang.Columns[1].HeaderText = "Ngày";
            danhsachbanhang.Columns[1].HeaderText = "Ngày";
        }

        public bool IsNumber(string pText)
        {
            Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
            return regex.IsMatch(pText);
        }

        bool kiemtranamnhuan(int nam)
        {
            if (nam % 4 == 0 && nam % 100 != 0)
                return true;
            return false;
        }

        int layngay(int thang, int nam)
        {
            if (thang == 2)
            {
                if (kiemtranamnhuan(nam))
                    return 29;
                else
                    return 28;
            }
            else
            {
                if (thang == 4 || thang == 6 || thang == 9 || thang == 12)
                    return 30;
                else
                    return 31;
            }
        }

        private void btnthongke_nhap_Click(object sender, EventArgs e)
        {
            int stt = 1;
            int thanhtien = 0;
            int tongsoluong = 0;
            danhsachmuahang.Rows.Clear();
            if ("".Equals(cbbthang_nhap.Text) || "Không chọn tháng".Equals(cbbthang_nhap.Text))
            {
                if (!IsNumber(cbbnam_nhap.Text))
                    MessageBox.Show("Thông tin thời gian sai!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    nam();
                    BIZ_phieunhap pn = new BIZ_phieunhap();
                    int[] soluongsanpham = new int[13];
                    int[] tongtiennhap = new int[13];
                    pn.Thongketheonam_phieunhap(int.Parse(cbbnam_nhap.Text), soluongsanpham, tongtiennhap);
                    for (int i = 1; i < 13; i++)
                    {
                        string thang = "";
                        if(i < 10)
                            thang = "0" + i.ToString();
                        else
                            thang = i.ToString();
                        string tongtien = tongtiennhap[i].ToString("c");
                        tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                        thanhtien += tongtiennhap[i];
                        tongsoluong += soluongsanpham[i];
                        if (soluongsanpham[i] > 0)
                        {
                            danhsachmuahang.Rows.Add(stt, thang, soluongsanpham[i], tongtien);
                            stt++;
                        }
                    }
                }
            }
            else
            {
                if (!IsNumber(cbbthang_nhap.Text))
                    MessageBox.Show("Thông tin thời gian sai!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    thang();
                    BIZ_phieunhap pn = new BIZ_phieunhap();
                    int[] soluongsanpham = new int[32];
                    int[] tongtiennhap = new int[32];
                    pn.Thongketheothang_phieunhap(int.Parse(cbbthang_nhap.Text), int.Parse(cbbnam_nhap.Text), soluongsanpham, tongtiennhap);
                    for (int i = 1; i < layngay(int.Parse(cbbthang_nhap.Text), int.Parse(cbbnam_nhap.Text)) + 1; i++)
                    {
                        string ngay = "";
                        if (i < 10)
                            ngay = "0" + i.ToString();
                        else
                            ngay = i.ToString();
                        string tongtien = tongtiennhap[i].ToString("c");
                        tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                        thanhtien += tongtiennhap[i];
                        tongsoluong += soluongsanpham[i];
                        if (soluongsanpham[i] > 0)
                        {
                            danhsachmuahang.Rows.Add(stt, ngay, soluongsanpham[i], tongtien);
                            stt++;
                        }
                    }
                }
            }
            string tt = thanhtien.ToString("c");
            tt = tt.Substring(1, tt.LastIndexOf(".") - 1) + " VNĐ";
            txttongchi.Text = tt;
            txtsoluongnhap.Text = tongsoluong.ToString() + " quyển";
            if (danhsachmuahang.RowCount < 1)
                btnbaocaonhap.Enabled = false;
            else
                btnbaocaonhap.Enabled = true;
        }

        private void Frm_thongkebaocao_Load(object sender, EventArgs e)
        {
        }

        private void btndong_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnthongke_ban_Click(object sender, EventArgs e)
        {
            int stt = 1;
            int thanhtien = 0;
            int tongsoluong = 0;
            danhsachbanhang.Rows.Clear();
            if ("".Equals(cbbthang_ban.Text) || "Không chọn tháng".Equals(cbbthang_ban.Text))
            {
                if (!IsNumber(cbbnam_ban.Text))
                    MessageBox.Show("Thông tin thời gian sai!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    nam();
                    BIZ_donhang dh = new BIZ_donhang();
                    int[] soluongsanpham = new int[13];
                    int[] tongtiennhap = new int[13];
                    dh.Thongketheonam_donhang(int.Parse(cbbnam_ban.Text), soluongsanpham, tongtiennhap);
                    for (int i = 1; i < 13; i++)
                    {
                        string thang = "";
                        if (i < 10)
                            thang = "0" + i.ToString();
                        else
                            thang = i.ToString();
                        string tongtien = tongtiennhap[i].ToString("c");
                        tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                        thanhtien += tongtiennhap[i];
                        tongsoluong += soluongsanpham[i];
                        if (soluongsanpham[i] > 0)
                        {
                            danhsachbanhang.Rows.Add(stt, thang, soluongsanpham[i], tongtien);
                            stt++;
                        }
                    }
                }

            }
            else
            {
                if (!IsNumber(cbbthang_ban.Text))
                    MessageBox.Show("Thông tin thời gian sai!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    thang();
                    BIZ_donhang dh = new BIZ_donhang();
                    int[] soluongsanpham = new int[32];
                    int[] tongtiennhap = new int[32];
                    dh.Thongketheothang_donhang(int.Parse(cbbthang_ban.Text), int.Parse(cbbnam_ban.Text), soluongsanpham, tongtiennhap);
                    for (int i = 1; i < layngay(int.Parse(cbbthang_ban.Text), int.Parse(cbbnam_ban.Text)) + 1; i++)
                    {
                        string ngay = "";
                        if (i < 10)
                            ngay = "0" + i.ToString();
                        else
                            ngay = i.ToString();
                        string tongtien = tongtiennhap[i].ToString("c");
                        tongtien = tongtien.Substring(1, tongtien.LastIndexOf(".") - 1);
                        thanhtien += tongtiennhap[i];
                        tongsoluong += soluongsanpham[i];
                        if (soluongsanpham[i] > 0)
                        {
                            danhsachbanhang.Rows.Add(stt, ngay, soluongsanpham[i], tongtien);
                            stt++;
                        }
                    }
                }
            }
            string tt = thanhtien.ToString("c");
            tt = tt.Substring(1, tt.LastIndexOf(".") - 1) + " VNĐ";
            txttongthu.Text = tt;
            txtsoluongban.Text = tongsoluong.ToString() + " quyển";
            if (danhsachbanhang.RowCount < 1)
                btnbaocaoban.Enabled = false;
            else
                btnbaocaoban.Enabled = true;
        }

        private void btnbaocaonhap_Click(object sender, EventArgs e)
        {
            Report rp = new Report();
            rp.ExportToExcel_nhap(danhsachmuahang, txtsoluongnhap, txttongchi, cbbthang_nhap, cbbnam_nhap);
        }

        private void btnbaocaoban_Click(object sender, EventArgs e)
        {
            Report rp = new Report();
            rp.ExportToExcel_ban(danhsachbanhang, txtsoluongban, txttongthu, cbbthang_ban, cbbnam_ban);
        }
    }
}
